package c05面向对象;

public class 初始化块 {

	//构造器最后执行！
	public 初始化块() {
		i = 3;
		j++;
	}

	//初始化块和定义非静态Field时的赋值将会按顺序执行！
	{
		i = 0;
		j++;
	}

	//	static int i=0;
//	static int j=0;
	{
		i = 2;
		j++;
	}

	static int i = 0;
	static int j = 0;

	//静态初始化块与静态Field的初始化赋值按顺序执行，但比普通初始化块更早执行！而且是第一次加载类时才执行！
	static {
		i = -1;
		j++;
	}

	public static void main(String[] args) {
		System.err.println(new 初始化块().i);
//		System.err.println(new 初始化块().i);
//
//		System.err.println(new 初始化块().j);
//		//上面已经初始化过类的对象，也就是说加载并初始化过类，这里就不会再加载该类了，静态代码块也就不会再被调用！
//		System.err.println(new 初始化块().j);
	}

}
